home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 23 / CU Amiga - Super CD-ROM 23 (June 1998).iso / CreatingGames / Utilities / C / ASAP / filelock.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-09-08  |  5.0 KB  |  137 lines

  1. /*****************************************************************************
  2.  *                                                                           *
  3.  * ASAP - Amiga Software Authoring Platform                                  *
  4.  *                                                                           *
  5.  * Written by Laurie Perrin                                                  *
  6.  *                                                                           *
  7.  * AFileLock wrapper class                                                   *
  8.  *                                                                           *
  9.  *****************************************************************************/
  10.  
  11. #ifndef ASAP_FileLock_H
  12. #define ASAP_FileLock_H
  13.  
  14. #include <New.h>
  15.  
  16. extern "C"
  17. {
  18.  #include <Proto/DOS.h> 
  19. }
  20.  
  21. class AFileHandle;
  22.  
  23. class AFileLock : public FileLock
  24. {
  25.  public:
  26.  inline AFileLock * CurrentDir();
  27.  inline AFileLock * DupLock();
  28.  inline void * operator new (size_t, AFileLock *);
  29.  inline LONG ExAll(ExAllData * buffer, long size, long data, ExAllControl * control);
  30.  inline void ExAllEnd(ExAllData * buffer, long size, long data, ExAllControl * control);
  31.  inline LONG ExNext(FileInfoBlock * fileInfoBlock);
  32.  inline LONG Examine(FileInfoBlock * fileInfoBlock);
  33.  inline LONG Info(InfoData * parameterBlock);
  34.  inline static AFileLock * Lock(STRPTR name, long type);
  35.  inline void * operator new(size_t, STRPTR name, long type);
  36.  inline LONG NameFromLock(STRPTR buffer, long len);
  37.  inline AFileHandle * OpenFromLock();
  38.  inline AFileLock * ParentDir();
  39.  inline BOOL SameDevice(FileLock * lock2);
  40.  inline LONG SameLock(FileLock * lock2);
  41.  inline AFileLock * SetProgramDir();
  42.  inline void UnLock();
  43.  inline void operator delete(void *lock);
  44. };
  45. //----------------------------------------------------------------------------
  46. AFileLock * AFileLock::CurrentDir ()
  47. {
  48.  return (AFileLock *) ::CurrentDir((BPTR) this);
  49. }
  50. //----------------------------------------------------------------------------
  51. AFileLock * AFileLock::DupLock ()
  52. {
  53.  return (AFileLock *) ::DupLock((BPTR) this);
  54. }
  55. //----------------------------------------------------------------------------
  56. void * AFileLock::operator new (size_t, AFileLock *lock)
  57. {
  58.  return ((AFileLock *) lock)->DupLock(); // ::DupLock((BPTR) lock);
  59. }
  60. //----------------------------------------------------------------------------
  61. LONG AFileLock::ExAll (ExAllData * buffer, long size, long data, ExAllControl * control)
  62. {
  63.  return ::ExAll((BPTR) this, buffer, size, data, control);
  64. }
  65. //----------------------------------------------------------------------------
  66. void AFileLock::ExAllEnd (ExAllData * buffer, long size, long data, ExAllControl * control)
  67. {
  68.  ::ExAllEnd((BPTR) this, buffer, size, data, control);
  69. }
  70. //----------------------------------------------------------------------------
  71. LONG AFileLock::ExNext (FileInfoBlock * fileInfoBlock)
  72. {
  73.  return ::ExNext((BPTR) this, fileInfoBlock);
  74. }
  75. //----------------------------------------------------------------------------
  76. LONG AFileLock::Examine (FileInfoBlock * fileInfoBlock)
  77. {
  78.  return ::Examine((BPTR) this, fileInfoBlock);
  79. }
  80. //----------------------------------------------------------------------------
  81. LONG AFileLock::Info (InfoData * parameterBlock)
  82. {
  83.  return ::Info((BPTR) this, parameterBlock);
  84. }
  85. //----------------------------------------------------------------------------
  86. AFileLock * AFileLock::Lock (STRPTR name, long type)
  87. {
  88.  return (AFileLock *) ::Lock(name, type);
  89. }
  90. //----------------------------------------------------------------------------
  91. void * AFileLock::operator new (size_t, STRPTR name, long type)
  92. {
  93.  return AFileLock::Lock(name, type);
  94. }
  95. //----------------------------------------------------------------------------
  96. LONG AFileLock::NameFromLock (STRPTR buffer, long len)
  97. {
  98.  return ::NameFromLock((BPTR) this, buffer, len);
  99. }
  100. //----------------------------------------------------------------------------
  101. AFileHandle * AFileLock::OpenFromLock ()
  102. {
  103.  return (AFileHandle *) ::OpenFromLock((BPTR) this);
  104. }
  105. //----------------------------------------------------------------------------
  106. AFileLock * AFileLock::ParentDir ()
  107. {
  108.  return (AFileLock *) ::ParentDir((BPTR) this);
  109. }
  110. //----------------------------------------------------------------------------
  111. BOOL AFileLock::SameDevice (FileLock * lock2)
  112. {
  113.  return ::SameDevice((BPTR) this, (BPTR) lock2);
  114. }
  115. //----------------------------------------------------------------------------
  116. LONG AFileLock::SameLock (FileLock * lock2)
  117. {
  118.  return ::SameLock((BPTR) this, (BPTR) lock2);
  119. }
  120. //----------------------------------------------------------------------------
  121. AFileLock * AFileLock::SetProgramDir ()
  122. {
  123.  return (AFileLock *) ::SetProgramDir((BPTR) this);
  124. }
  125. //----------------------------------------------------------------------------
  126. void AFileLock::UnLock ()
  127. {
  128.  ::UnLock((BPTR) this);
  129. }
  130. //----------------------------------------------------------------------------
  131. void AFileLock::operator delete (void *lock)
  132. {
  133.  ((AFileLock *) lock)->UnLock();
  134. }
  135.  
  136. #endif
  137.